↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
APPEND3_IN_AAAG(A, B, C, D) → U2_AAAG(A, B, C, D, append_in_aaa(A, B, E))
APPEND3_IN_AAAG(A, B, C, D) → APPEND_IN_AAA(A, B, E)
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → U1_AAA(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAA(L1, L2, L3)
U2_AAAG(A, B, C, D, append_out_aaa(A, B, E)) → U3_AAAG(A, B, C, D, append_in_aag(E, C, D))
U2_AAAG(A, B, C, D, append_out_aaa(A, B, E)) → APPEND_IN_AAG(E, C, D)
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → U1_AAG(H, L1, L2, L3, append_in_aag(L1, L2, L3))
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAG(L1, L2, L3)
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
APPEND3_IN_AAAG(A, B, C, D) → U2_AAAG(A, B, C, D, append_in_aaa(A, B, E))
APPEND3_IN_AAAG(A, B, C, D) → APPEND_IN_AAA(A, B, E)
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → U1_AAA(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAA(L1, L2, L3)
U2_AAAG(A, B, C, D, append_out_aaa(A, B, E)) → U3_AAAG(A, B, C, D, append_in_aag(E, C, D))
U2_AAAG(A, B, C, D, append_out_aaa(A, B, E)) → APPEND_IN_AAG(E, C, D)
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → U1_AAG(H, L1, L2, L3, append_in_aag(L1, L2, L3))
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAG(L1, L2, L3)
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAG(L1, L2, L3)
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAG(L1, L2, L3)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAG(.(L3)) → APPEND_IN_AAG(L3)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAA(L1, L2, L3)
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAA(L1, L2, L3)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
APPEND_IN_AAA → APPEND_IN_AAA
APPEND_IN_AAA → APPEND_IN_AAA
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
APPEND3_IN_AAAG(A, B, C, D) → U2_AAAG(A, B, C, D, append_in_aaa(A, B, E))
APPEND3_IN_AAAG(A, B, C, D) → APPEND_IN_AAA(A, B, E)
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → U1_AAA(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAA(L1, L2, L3)
U2_AAAG(A, B, C, D, append_out_aaa(A, B, E)) → U3_AAAG(A, B, C, D, append_in_aag(E, C, D))
U2_AAAG(A, B, C, D, append_out_aaa(A, B, E)) → APPEND_IN_AAG(E, C, D)
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → U1_AAG(H, L1, L2, L3, append_in_aag(L1, L2, L3))
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAG(L1, L2, L3)
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
APPEND3_IN_AAAG(A, B, C, D) → U2_AAAG(A, B, C, D, append_in_aaa(A, B, E))
APPEND3_IN_AAAG(A, B, C, D) → APPEND_IN_AAA(A, B, E)
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → U1_AAA(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAA(L1, L2, L3)
U2_AAAG(A, B, C, D, append_out_aaa(A, B, E)) → U3_AAAG(A, B, C, D, append_in_aag(E, C, D))
U2_AAAG(A, B, C, D, append_out_aaa(A, B, E)) → APPEND_IN_AAG(E, C, D)
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → U1_AAG(H, L1, L2, L3, append_in_aag(L1, L2, L3))
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAG(L1, L2, L3)
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAG(L1, L2, L3)
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APPEND_IN_AAG(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAG(L1, L2, L3)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
APPEND_IN_AAG(.(L3)) → APPEND_IN_AAG(L3)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAA(L1, L2, L3)
append3_in_aaag(A, B, C, D) → U2_aaag(A, B, C, D, append_in_aaa(A, B, E))
append_in_aaa([], L, L) → append_out_aaa([], L, L)
append_in_aaa(.(H, L1), L2, .(H, L3)) → U1_aaa(H, L1, L2, L3, append_in_aaa(L1, L2, L3))
U1_aaa(H, L1, L2, L3, append_out_aaa(L1, L2, L3)) → append_out_aaa(.(H, L1), L2, .(H, L3))
U2_aaag(A, B, C, D, append_out_aaa(A, B, E)) → U3_aaag(A, B, C, D, append_in_aag(E, C, D))
append_in_aag([], L, L) → append_out_aag([], L, L)
append_in_aag(.(H, L1), L2, .(H, L3)) → U1_aag(H, L1, L2, L3, append_in_aag(L1, L2, L3))
U1_aag(H, L1, L2, L3, append_out_aag(L1, L2, L3)) → append_out_aag(.(H, L1), L2, .(H, L3))
U3_aaag(A, B, C, D, append_out_aag(E, C, D)) → append3_out_aaag(A, B, C, D)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
APPEND_IN_AAA(.(H, L1), L2, .(H, L3)) → APPEND_IN_AAA(L1, L2, L3)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
APPEND_IN_AAA → APPEND_IN_AAA
APPEND_IN_AAA → APPEND_IN_AAA